<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Fechas {

    var $CI;
    var $tables = array();

    function Fechas() {
        $this->CI = & get_instance();
    }

    function fec_str_to_ymd($fecha = null) {
        if ($fecha == null) {
            return date("Ymd");
        }
        $array_fecha = explode("/", $fecha);
        if (count($array_fecha) == 1) {
            $array_fecha = explode("-", $fecha);
        }
        $fecha = $array_fecha[2] . $array_fecha[1] . $array_fecha[0];
        return $fecha;
    }

    function fec_ymd_to_str($fecha = null) {
        if ($fecha == null) {
            return null;
        }
        return substr($fecha, 6, 2) . "/" . substr($fecha, 4, 2) . "/" . substr($fecha, 0, 4);
    }

    function fec_str_to_mysql($fecha_nom = null) {
        if ($fecha_nom == null) {
            $fecha_nom = date("Y/m/d");
        } else {
            $array_fecha = explode("/", $fecha_nom);
            if (isset($array_fecha[1])) {
                $fecha_nom = $array_fecha[2] . "-" . $array_fecha[1] . "-" . $array_fecha[0];
            } else {
                $array_fecha = explode("-", $fecha_nom);
                $fecha_nom = $array_fecha[2] . "-" . $array_fecha[1] . "-" . $array_fecha[0];
            }
        }
        return $fecha_nom;
    }

    function fec_mysql_to_str($fechanomina, $separador = "/") {
        preg_match("/([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})/", $fechanomina, $mifechalista);
        $lafechalista = $mifechalista[3] . $separador . $mifechalista[2] . $separador . $mifechalista[1];
        return $lafechalista;
    }

    function restar_fechas($fecha1 = '', $fecha2 = '') {
        //calculo timestam de las dos fechas
        $timestamp1 = mktime(0, 0, 0, substr($fecha1, 3, 2), substr($fecha1, 0, 2), substr($fecha1, 6, 4));
        $timestamp2 = mktime(0, 0, 0, substr($fecha2, 3, 2), substr($fecha2, 0, 2), substr($fecha2, 6, 4));
        //resto a una fecha la otra
        $segundos_diferencia = $timestamp2 - $timestamp1;
        //convierto segundos en días
        $dias_diferencia = $segundos_diferencia / (60 * 60 * 24);
        //quito los decimales a los días de diferencia
        $dias_diferencia = ceil($dias_diferencia);
        return $dias_diferencia;
    }
    
    function sumar_dias($fecha1 = '', $dias = '', $formato = 'Y-m-d') {
        $timestamp1 = date($formato, strtotime('+'.$dias.' day', strtotime($fecha1)));
        return $timestamp1;
    }
    
    function getDato($fecha = null, $dato = null, $formato = 'Y-m-d', $separador = '-') {
        $pos = "";
        $array_fecha = count(explode("/", $fecha)) > 1 ? explode("/", $fecha) : explode("-", $fecha);
        if($dato == 'dia'){
            if(strlen($array_fecha[0]) == 2){
                $pos = 0;
            }else{
                $pos = 2;
            }
        }else if ($dato == 'mes'){
            $pos = 1;
        }else if ($dato == 'ano'){
            if(strlen($array_fecha[0]) == 4){
                $pos = 0;
            }else{
                $pos = 2;
            }
        }else{
            if($formato == 'd-m-Y' || $formato == 'd/m/Y'){
                if(strlen($array_fecha[0]) == 4){
                    return $array_fecha[2].$separador.$array_fecha[1].$separador.$array_fecha[0];
                }
            }else{
                if(strlen($array_fecha[0]) == 2){
                    return $array_fecha[2].$separador.$array_fecha[1].$separador.$array_fecha[0];
                }
            }
            return $array_fecha;
        }
        return $array_fecha[$pos];
    }
    
    function diferencia_meses($fecdes, $fechas, $return = 'array'){
        if($return == 'array'){
            $array = array();
            $diferencia_meses = $this->getDato($fechas, 'mes') - $this->getDato($fecdes, 'mes');
            $diferencia_meses = $diferencia_meses + (($this->getDato($fechas, 'ano') - $this->getDato($fecdes, 'ano')) * 12);
            for($x = 0; $x < $diferencia_meses; $x++){
                $nuevafecha = date("Y-m-d", strtotime('+'.$x.' month', strtotime($fecdes)));
                $array[] = array('mes' => $this->getDato($nuevafecha, 'mes'), 'ano' => $this->getDato($nuevafecha, 'ano'));
            }
            return $array;
        }
    }
    
    function fec_mysql_to_str_with_time($fechanomina, $separador = "/"){
        $fecha = substr($fechanomina, 0, 10);
        $hora = substr($fechanomina, -8);
        $array_fecha = count(explode("/", $fecha)) > 1 ? explode("/", $fecha) : explode("-", $fecha);
        if(date('d'.$separador.'m'.$separador.'Y') == $array_fecha[2].$separador.$array_fecha[1].$separador.$array_fecha[0]){
            return lang('hoy').', '.$hora;
        }
        
        return $array_fecha[2].$separador.$array_fecha[1].$separador.$array_fecha[0]." ".$hora;
    }
}

?>